/*
 *@Description: 验证码接口控制器
 *@Author: panlua
 *@Date: 2019-05-23 20:39:57
*/
const Router = require('koa-router')
// 导入生成图形验证码库
const svgCaptcha = require('svg-captcha');
const {Sms} = require('../model/index')

const router = new Router({
  prefix: '/code'
})

// 图形验证码接口
router.get('/captcha', async(ctx) => {
  // 生成图形验证码
  const data = svgCaptcha.create()
  // 将图形验证码答案保存在SESSION中
  ctx.session.captcha = data.text
  // 获取全局返回模板
  let message = global.success
  // 改变返回内容为SVG图形
  message.returnObj = data.data
  // 响应接口
  ctx.body = message
})

// 模拟短信验证码接口
router.get('/sms', async(ctx) => {
  const phone = ctx.query.phone
  if (!phone) {
    fail.msgContent = '参数不全'
    ctx.body = fail
    return false
  }
  if (!utils.isMobile(phone)) {
    fail.msgContent = '手机号码格式不正确'
    ctx.body = fail
    return false
  }
  // 验证是否已经获取
  try {
    const check = await Sms.find({mobileNumber: phone, expiresTime: {$gt: utils.getNowTimeStamp()}})
    if (check.length) {
      fail.msgContent = '短信验证码已获取过，10分钟以内不得获取',
      ctx.body = fail
      return false
    }
  } catch (err) {
    fail.msgContent = '服务器异常'
    ctx.body = fail
  }
  
  try {
    let smsCode = utils.randomNum(6)
    const sms = await Sms.create({
      mobileNumber: phone,
      code: smsCode,
      createTime: utils.getNowTimeStamp(),
      expiresTime: utils.getNowTimeStamp() + expire.sms
    })
    if (!sms) {
      fail.msgContent = '服务器异常'
      ctx.body = fail
      return false
    }
    success.returnObj = `短信验证码：${smsCode}`
    ctx.body = success
  } catch (err) {
    fail.msgContent = '服务器异常'
    ctx.body = fail
  }
})

module.exports = router